home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swags_z.zip
/
SCREEN.SWG
/
0082_Sorta good WritePattern.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-02-28
|
3KB
|
73 lines
Procedure WriteP (DispStr : String; X,Y,Colr : Byte; FChar : Char;
Patrn : String);
(* DispStr = non-formatted string to be output to the screen.
ie: pass '4031234567', not '(403) 123-4567'.
X,Y = location to begin writing string to screen. If
the pattern begins with an 'X', this WILL be
taken into account and will advance one space.
Colr = attribute of DispStr.
FChar = Filler character for strings that don't complete
the pattern.
Patrn = Template for writing string to screen.
Essentially, the only character required in this
template is the 'X', to show where a character
is NOT displayed.
*)
(* This procedure will write DispStr to the screen, following the guidelines
given in Patrn. For example, calling
WriteP ('40312345',10,11,7,'_','X###XX###X####');
will display:
403 123 45__
^advancing space
on the screen. Of course, the '( ) -' would make it complete, but
that's just an example.
*)
(* Standard disclaimer: I'm not liable for anything this procedure does
outside the original purpose of the procedure. If
something bad happens, let me know, but that's all
I can do.
*)
Var
Loc, PX : Integer;
Begin
Colr := CheckColor (Colr);
Loc := ((X-1)*2)+((Y-1)*160);
Loop := 1;
PX := 1;
While PX <= Length (Patrn) Do
Begin
If Patrn[PX] = 'X' Then
While Patrn[PX] = 'X' Do
Begin
Inc (Loc,2);
Inc (PX);
End
Else
Begin
If Loop <= Length (DispStr) Then
Begin
Mem[VidSeg:Loc] := Ord (DispStr[Loop]);
Mem[VidSeg:Loc+1] := Colr;
End
Else
Begin
Mem[VidSeg:Loc] := Ord (FChar);
Mem[VidSeg:Loc+1] := HiColr;
End;
Inc (Loop);
Inc (Loc,2);
Inc (PX);
End;
End;
End;